package com.totoro.motan.demo.properties;

import lombok.Getter;
import lombok.Setter;
import org.springframework.boot.context.properties.ConfigurationProperties;
import org.springframework.context.annotation.Configuration;

/**
 * 服务调用方配置
 * basicReferer标志使用的基本配置。用于配置所有服务代理的公共属性
 * <motan:basicService/> <motan:service/>
 * Created by Niki on 2018/5/23 20:23
 */
@Configuration
@ConfigurationProperties(prefix = "motan.basicreferer")
@Getter
@Setter
public class BasicRefererConfigProperties {
    /** 服务引用 BeanId */
    private String id;

    /** 使用的协议 default motan */
    private String protocol;

    /** 服务分组 defalut default_rpc */
    private String group;

    /** 模块信息 */
    private String module;

    /** 应用信息 */
    private String application;

    /** 注册中心的id 列表，多个用“,”分隔，如果为空，则使用所有的配置中心 */
    private String registry;

    /** 检查服务提供者是否存在 */
    private String check;

    /** 设为true，将向logger 中输出访问日志 */
    private Boolean accessLog;

    /** 重试次数 defalut 0 */
    private Integer retries;

    /** 抛出异常 default true */
    private Boolean throwException;

    /** 版本 default 1.0 */
    private String version;

    /** 是否共享channel default false */
    private Boolean shareChannel;

    /** 请求超时时间(毫秒) default 200 */
    private Integer requestTimeout;

    /** 过滤器配置 */
    private String filter;

    /** 扩展配置 */
    private String extConfigId;

    /** 最大请求数，0为不做并发限制 default 0 */
    private Integer actives;

    /** 方法是否异步 default false */
    private Boolean async;

    /** 协议编码 */
    private String codec;

    /** 是否开启gzip压缩.只有compressMotan的codec才能支持 */
    private Boolean usegz;

    /** 代理类型 */
    private String proxy;

    /**
     * 开启gzip压缩的阈值.usegz开关开启，且传输数据大于此阈值时，才会进行gzip压缩。
     * 只有compressMotan的codec才能支持
     */
    private Integer mingzSize;

    /**
     * 设为true，表示使用缺省Mock类名
     * 即：接口名+Mock 后缀，服务接口调用失败Mock实现类
     */
    private String mock;

    /** 以下4个文档未描述 */
    private String errorRate;
    private String localServiceAddress;
    private String mean;
    private Boolean defaultConfig;
}
